package com.edu.leetcode.dataStruct;

import org.apache.lucene.index.SingleTermsEnum;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Optional;
import java.util.stream.IntStream;

/**
 * 1：两数之和
 * 给定一个整数数组 nums 和一个整数目标值 target，请你在该数组中找出和为目标值的那两个整数，并返回它们的数组下标。
 * 你可以假设每种输入只会对应一个答案。但是，数组中同一个元素不能使用两遍。
 *
 * @作者 five-five
 * @创建时间 2021/1/5
 */
public class Demo03 {
    public static void main(String[] args) {
        Demo03 demo03 = new Demo03();
        int[] ints = demo03.twoSum(new int[]{2,5,5,11}, 10);
        System.out.println(Arrays.toString(ints));
    }

    int count = 0;

    /**
     * @param nums
     * @param target
     * @return
     */
    public int[] twoSum(int[] nums, int target) {
        if (nums == null || nums.length == 0) {
            return null;
        }
        ArrayList<Integer> list = new ArrayList<>();
        for (int i = 0; i < nums.length; i++) {
            boolean flage = false;
            int before = nums[i];
            for (int j = i+1; j < nums.length; j++) {
                int after = nums[j];
                if (before + after == target) {
                    flage = list.add(i);
                    list.add(j);
                    break;
                }
            }
            if (flage) {
                break;
            }
        }
        return list.stream().mapToInt(num -> (int) num).toArray();
    }

    private void fillArray(int[] nums, int count, int i) {
        nums[count] = i;
        count++;
    }
}
